pub struct Context<'a, 'cfg: 'a> {
pub config: &'cfg Config,
pub resolve: &'a Resolve,
+ pub current_package: PackageId,
pub compilation: Compilation<'cfg>,
pub packages: &'a PackageSet<'cfg>,
pub build_state: Arc<BuildState>,
let engine = build_config.exec_engine.as_ref().cloned().unwrap_or({
Arc::new(Box::new(ProcessEngine))
});
+ let current_package = try!(ws.current()).package_id().clone();
+ assert_eq!(¤t_package, resolve.root());
Ok(Context {
host: host_layout,
target: target_layout,
resolve: resolve,
+ current_package: current_package,
packages: packages,
config: config,
target_info: TargetInfo::default(),
/// Returns the appropriate directory layout for either a plugin or not.
pub fn layout(&self, unit: &Unit) -> LayoutProxy {
- let primary = unit.pkg.package_id() == self.resolve.root();
+ let primary = unit.pkg.package_id() == &self.current_package;
match unit.kind {
Kind::Host => LayoutProxy::new(&self.host, primary),
Kind::Target => LayoutProxy::new(self.target.as_ref()
}
pub fn show_warnings(&self, pkg: &PackageId) -> bool {
- pkg == self.resolve.root() || pkg.source_id().is_path() ||
+ pkg == &self.current_package || pkg.source_id().is_path() ||
self.config.extra_verbose()
}
}
})
}).collect::<Vec<_>>();
- let root = try!(packages.get(resolve.root()));
+ let root = try!(ws.current());
let mut cx = try!(Context::new(ws, resolve, packages, config,
build_config, profiles));
let do_rename = unit.target.allows_underscores() && !unit.profile.test;
let real_name = unit.target.name().to_string();
let crate_name = unit.target.crate_name();
- let move_outputs_up = unit.pkg.package_id() == cx.resolve.root();
+ let move_outputs_up = unit.pkg.package_id() == &cx.current_package;
let rustc_dep_info_loc = if do_rename {
root.join(&crate_name)
let prefer_dynamic = (unit.target.for_host() &&
!unit.target.is_custom_build()) ||
(crate_types.contains(&"dylib") &&
- unit.pkg.package_id() != cx.resolve.root());
+ unit.pkg.package_id() != &cx.current_package);
if prefer_dynamic {
cmd.arg("-C").arg("prefer-dynamic");
}